package com.lry.util;

import java.util.regex.Pattern;

/**
 * 安全工具
 *
 * @author 李瑞益
 * @date 2019/11/22
 */
public class LoginUtil {
    /**
     * 复制度校验
     * 验证密码的合法性
     * 1、大小写字母
     * 2、字符
     * 3、数字
     *
     * @param password 密码
     * @return true 合法
     */
    public static String validDegreePassword(String password) {
        if (password.length() < 8) {
            return "密码长度太短";
        }
        if (password.length() > 16) {
            return  "密码长度太长";
        }
        String pureNumber = "^\\d{8,16}$";
        if (Pattern.matches(pureNumber, password)) {
            return "密码不能是纯数字";
        }
        String pureLetter = "^[a-zA-Z]{8,16}$";
        if (Pattern.matches(pureLetter, password)) {
            return "密码不能是纯字母";
        }
        if(Pattern.matches("[\\u4e00-\\u9fa5]{0,}",password)){
            return "密码不能含有中文";
        }
        //^(!|@|#|\$|%|\^|&|\*|\(|\)|_|-|\+|=|;|:|'|<|>|,|\.|\?|"|'){6,}$
        String pureStr = "^\\W{8,}$";
        if (Pattern.matches(pureStr, password)) {
            return "密码不能是纯字符";
        }
        if (Pattern.matches("\\s", password)) {
            return "密码不能含有空白符";
        }

        //数组、大小写、字符组合
        String charLetter = "^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\\W]).{8,16}$";
        if (!Pattern.matches(charLetter, password)) {
            return "密码必须包含数字、大小写字母和字符";
        }
        return null;
    }

}
